package com.cykj.shop.service;

import com.cykj.shop.domain.dto.HotKeywordDTO;
import com.cykj.shop.domain.dto.ShopInfoDTO;
import com.cykj.system.api.domain.Shop;
import com.cykj.system.api.domain.ShopCategoryVo;

import java.util.List;

public interface IShopService {

    /**
     * 多条件获取附近店铺
     */
    List<ShopInfoDTO> getNearbyShops(
            Double longitude, Double latitude, Double distance,
            Integer shopCategory, String keyword,
            Double minGrade, Double maxGrade, Integer pageSize
    );

    /**
     * 获取店铺分类列表
     */
    List<ShopCategoryVo> getShopCategories();

    /**
     * 获取店铺详情
     */
    Shop selectShopById(Long id);

    // 新增方法
    /**
     * 1. 记录搜索关键词（更新热度）
     * @param keyword 关键词
     */
    void recordSearchKeyword(String keyword);

    /**
     * 2. 获取Top10热搜词
     * @return 热搜列表
     */
    List<HotKeywordDTO> getHotKeywords();

    /**
     * 3. 搜索店铺（与getNearbyShops逻辑一致，单独方法便于扩展）
     * @param longitude 经度
     * @param latitude 纬度
     * @param distance 搜索距离
     * @param keyword 关键词
     * @param minGrade 最低评分
     * @param maxGrade 最高评分
     * @param pageSize 分页大小
     * @return 店铺列表
     */
    List<ShopInfoDTO> searchShops(Double longitude, Double latitude, Double distance,
                                  String keyword, Double minGrade, Double maxGrade, Integer pageSize);
}